home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / usr / include / bits / shm.h < prev    next >
C/C++ Source or Header  |  2008-09-29  |  4KB  |  111 lines

  1. /* Copyright (C) 1995, 1996, 1997, 2000, 2002, 2004
  2.    Free Software Foundation, Inc.
  3.    This file is part of the GNU C Library.
  4.  
  5.    The GNU C Library is free software; you can redistribute it and/or
  6.    modify it under the terms of the GNU Lesser General Public
  7.    License as published by the Free Software Foundation; either
  8.    version 2.1 of the License, or (at your option) any later version.
  9.  
  10.    The GNU C Library is distributed in the hope that it will be useful,
  11.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  13.    Lesser General Public License for more details.
  14.  
  15.    You should have received a copy of the GNU Lesser General Public
  16.    License along with the GNU C Library; if not, write to the Free
  17.    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  18.    02111-1307 USA.  */
  19.  
  20. #ifndef _SYS_SHM_H
  21. # error "Never include <bits/shm.h> directly; use <sys/shm.h> instead."
  22. #endif
  23.  
  24. #include <bits/types.h>
  25.  
  26. /* Permission flag for shmget.  */
  27. #define SHM_R        0400        /* or S_IRUGO from <linux/stat.h> */
  28. #define SHM_W        0200        /* or S_IWUGO from <linux/stat.h> */
  29.  
  30. /* Flags for `shmat'.  */
  31. #define SHM_RDONLY    010000        /* attach read-only else read-write */
  32. #define SHM_RND        020000        /* round attach address to SHMLBA */
  33. #define SHM_REMAP    040000        /* take-over region on attach */
  34.  
  35. /* Commands for `shmctl'.  */
  36. #define SHM_LOCK    11        /* lock segment (root only) */
  37. #define SHM_UNLOCK    12        /* unlock segment (root only) */
  38.  
  39. __BEGIN_DECLS
  40.  
  41. /* Segment low boundary address multiple.  */
  42. #define SHMLBA        (__getpagesize ())
  43. extern int __getpagesize (void) __THROW __attribute__ ((__const__));
  44.  
  45.  
  46. /* Type to count number of attaches.  */
  47. typedef unsigned long int shmatt_t;
  48.  
  49. /* Data structure describing a shared memory segment.  */
  50. struct shmid_ds
  51.   {
  52.     struct ipc_perm shm_perm;        /* operation permission struct */
  53.     size_t shm_segsz;            /* size of segment in bytes */
  54.     __time_t shm_atime;            /* time of last shmat() */
  55. #if __WORDSIZE == 32
  56.     unsigned long int __unused1;
  57. #endif
  58.     __time_t shm_dtime;            /* time of last shmdt() */
  59. #if __WORDSIZE == 32
  60.     unsigned long int __unused2;
  61. #endif
  62.     __time_t shm_ctime;            /* time of last change by shmctl() */
  63. #if __WORDSIZE == 32
  64.     unsigned long int __unused3;
  65. #endif
  66.     __pid_t shm_cpid;            /* pid of creator */
  67.     __pid_t shm_lpid;            /* pid of last shmop */
  68.     shmatt_t shm_nattch;        /* number of current attaches */
  69.     unsigned long int __unused4;
  70.     unsigned long int __unused5;
  71.   };
  72.  
  73. #ifdef __USE_MISC
  74.  
  75. /* ipcs ctl commands */
  76. # define SHM_STAT     13
  77. # define SHM_INFO     14
  78.  
  79. /* shm_mode upper byte flags */
  80. # define SHM_DEST    01000    /* segment will be destroyed on last detach */
  81. # define SHM_LOCKED    02000   /* segment will not be swapped */
  82. # define SHM_HUGETLB    04000    /* segment is mapped via hugetlb */
  83. # define SHM_NORESERVE    010000    /* don't check for reservations */
  84.  
  85. struct    shminfo
  86.   {
  87.     unsigned long int shmmax;
  88.     unsigned long int shmmin;
  89.     unsigned long int shmmni;
  90.     unsigned long int shmseg;
  91.     unsigned long int shmall;
  92.     unsigned long int __unused1;
  93.     unsigned long int __unused2;
  94.     unsigned long int __unused3;
  95.     unsigned long int __unused4;
  96.   };
  97.  
  98. struct shm_info
  99.   {
  100.     int used_ids;
  101.     unsigned long int shm_tot;    /* total allocated shm */
  102.     unsigned long int shm_rss;    /* total resident shm */
  103.     unsigned long int shm_swp;    /* total swapped shm */
  104.     unsigned long int swap_attempts;
  105.     unsigned long int swap_successes;
  106.   };
  107.  
  108. #endif /* __USE_MISC */
  109.  
  110. __END_DECLS
  111.